// 引入 Toast
import Toast from '@vant/weapp/toast/toast';
Page({
	data: {
		avatarUrl: '', // 头像地址
		nickname: '', // 昵称
		gender: 1, // 性别（1: 男，0: 女）
		birthday: '', // 生日
		region: [], // 地区
		regionValue: [], // 默认选中地区
		identity: '模特', // 身份
		showGender: false, // 是否显示性别选择器
		showBirthday: false, // 是否显示生日选择器
		showIdentity: false, // 是否显示身份选择器
		genderColumns: ['男', '女'], // 性别选项
		identityColumns: ['模特', '摄影师'], // 身份选项
		currentDate: new Date().getTime(), // 当前日期
		minDate: new Date(1900, 0, 1).getTime(), // 最小日期：1900年1月1日
		maxDate: new Date(2034, 11, 31).getTime(), // 最大日期：2034年12月31日
	},

	onLoad() {
		// 页面加载时从本地存储或服务器获取用户信息
		const userInfo = wx.getStorageSync('userDetails');
		const localtion = [userInfo.province, userInfo.city, userInfo.district];
		if (userInfo) {
			this.setData({
				avatarUrl: userInfo.avatar || this.data.avatarUrl,
				nickname: userInfo.username || this.data.nickname,
				gender: userInfo.gender || this.data.gender,
				birthday: userInfo.birthday || this.data.birthday,
				region: localtion || this.data.region,
				identity: userInfo.identity || this.data.identity,
			});
		}
	},

	// 用户选择头像后的回调
	onChooseAvatar(event) {
		const {
			avatarUrl
		} = event.detail;
		this.setData({
			avatarUrl: avatarUrl,
		});

		// 上传头像到服务器
		this.uploadFile(avatarUrl);
	},

	// 上传文件到服务器
uploadFile(filePath) {
  const that = this;
  wx.showLoading({ title: '上传中...', mask: true });

  wx.uploadFile({
    url: 'http://localhost:8080/user/common/upload', // 替换为你的后端接口地址
    header: {
      token: wx.getStorageSync("userInfo").data.token, // 携带 token
    },
    filePath: filePath, // 使用传递的文件路径
    name: 'file', // 后端接口接收文件的参数名
    success(res) {
      wx.hideLoading();
      console.log(res);

      if (res.statusCode === 200) {
        const data = JSON.parse(res.data);
        console.log(data.code);

        if (data.code === 1) { // 假设 code 为 1 表示成功
					const serverFilePath = data.data; // 获取返回的文件地址
					console.log(serverFilePath)
          console.log('服务器返回的头像地址:', serverFilePath);

          // 更新头像地址
          that.setData({
            avatarUrl: serverFilePath, // 保存头像地址
          });

          Toast('上传成功');
        } else {
          Toast(data.msg || '上传失败');
        }
      } else {
        Toast('上传失败');
      }
    },
    fail(err) {
      wx.hideLoading();
      Toast('上传失败');
      console.error('上传失败:', err);
    },
  });
},

	// 用户输入昵称后的回调
  onNicknameInput(event) {
    const nickname = event.detail; // 获取输入值
    console.log('昵称是', nickname); // 打印输入值
    this.setData({
      nickname: nickname,
    });
  },

	// 显示性别选择器
	showGenderPopup() {
		this.setData({
			showGender: true,
		});
	},

	// 关闭性别选择器
	onCloseGender() {
		this.setData({
			showGender: false,
		});
	},

	// 性别选择器确认
	onGenderChange(event) {
		const {
			value
		} = event.detail;
		this.setData({
			gender: value === '男' ? 1 : 0,
		});
	},

	// 显示生日选择器
	showBirthdayPopup() {
		this.setData({
			showBirthday: true,
		});
	},

	// 关闭生日选择器
	onCloseBirthday() {
		this.setData({
			showBirthday: false,
		});
	},

	// 生日选择器确认
	onConfirmBirthday(event) {
		const date = new Date(event.detail);
		const year = date.getFullYear();
		const month = String(date.getMonth() + 1).padStart(2, '0');
		const day = String(date.getDate()).padStart(2, '0');
		const formattedDate = `${year}-${month}-${day}`;
		this.setData({
			birthday: formattedDate,
			currentDate: event.detail,
			showBirthday: false,
		});
	},

	// 地区选择器 change 事件处理函数
	onRegionChange(event) {
		const {
			value
		} = event.detail; // 获取选中的省、市、区数组

		// 更新数据
		this.setData({
			region: value, // 更新地区数组
			regionValue: value, // 更新选中的地区数组
		});
	},

	// 显示身份选择器
	showIdentityPopup() {
		this.setData({
			showIdentity: true,
		});
	},

	// 关闭身份选择器
	onCloseIdentity() {
		this.setData({
			showIdentity: false,
		});
	},

	// 身份选择器确认
	onIdentityChange(event) {
		const {
			value
		} = event.detail;
		this.setData({
			identity: value,
		});
	},

	// 保存表单
	save() {
		const {
			nickname,
			gender,
			birthday,
			region,
			identity,
			avatarUrl
		} = this.data;

		// 表单校验
		if (!avatarUrl) {
			wx.showToast({
				title: '头像不能为空',
				icon: 'none'
			});
			return;
		}
		if (!nickname) {
			wx.showToast({
				title: '昵称不能为空',
				icon: 'none'
			});
			return;
		}
		if (!birthday) {
			wx.showToast({
				title: '生日不能为空',
				icon: 'none'
			});
			return;
		}
		if (!region || region.length !== 3) {
			wx.showToast({
				title: '地区不能为空',
				icon: 'none'
			});
			return;
		}

		// 构造请求数据
		const userDTO = {
			username: nickname,
			avatar: avatarUrl,
			gender: gender,
			birthday: birthday,
			province: region[0],
			city: region[1],
			district: region[2],
			role: identity === '模特' ? 0 : 1,
		};

		// 发送请求
		wx.request({
			url: 'http://localhost:8080/user/user/update', // 替换为你的后端接口地址
			method: 'PUT',
			header: {
				'Content-Type': 'application/json',
				token: wx.getStorageSync('userInfo').data.token,
			},
			data: userDTO,
			success(res) {
				if (res.statusCode === 200) {
					wx.showToast({
						title: '保存成功',
						icon: 'success'
					});
				} else {
					wx.showToast({
						title: '保存失败',
						icon: 'none'
					});
				}
			},
			fail(err) {
				console.error('请求失败:', err);
				wx.showToast({
					title: '请求失败',
					icon: 'none'
				});
			},
		});
	},
});